package com.xingda.packing.domain;

import com.xingda.packing.enums.EQType;
import com.xingda.packing.enums.WheelFinishedState;
import com.xingda.packing.enums.WheelQualityState;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 工字轮
 *
 * @author LEGION
 */
@Data
public class Wheel implements Serializable {

    private static final long serialVersionUID = 8216647242514784231L;

    /**
     * 条形码
     */
    private String barCode;
    /**
     * PLC条码备份
     */
    private String barCodeBack;
    /**
     * 定长
     */
    private Integer fixedLength;
    /**
     * 工字轮类型
     */
    private String vFree2;
    /**
     * 工字轮装箱类型
     */
    private String wheelTag;

    private String wheelTagMap;

    /**
     * 质量合格状态
     */
    private WheelQualityState qualityState;

    /**
     * 完成状态
     */
    private WheelFinishedState finishedState;

    /**
     * 扭转值
     */
    private BigDecimal torsionValue;

    /**
     * 焊点数
     */
    private int solderJointCount;

    /**
     * 生产机台号
     */
    private String machineNo;

    /**
     * ab面
     */
    private String ab;

    /**
     * 产品主键
     */
    private String pkIntermediate;

    /**
     * 客户名称
     */
    private String consumerName;

    /**
     * 轮子卸轮类型
     */
    private String eqType;

    /**
     * 物料编号
     */
    private String pkInvbasdoc;

    /**
     * 卸轮时间
     */
    private Date downTime;

    /**
     * 轮子状态
     */
    private int state;
    private int area;

    /**
     * 轮子条码是否重复(是否已经装箱过)
     */
    private boolean isRepeat = false;


    /**
     * 是否可用，可用返回true,不可用返回false;质量合格&成品&条形码XC开头为可用
     */
    public boolean isAvailable() {
        return this.getFinishedState() == WheelFinishedState.FINISHED
                && this.getQualityState() == WheelQualityState.QUALITY
                && this.getBarCode().startsWith("XC");
    }

    /**
     * 是否重卷轮，重卷返回true
     */
    public boolean isAnew() {
        return EQType.ANEW.getType().equalsIgnoreCase(eqType);
    }

    /**
     * 是否重卷轮，不重卷返回true
     */
    public boolean isNotAnew() {
        return !isAnew();
    }
}
